home *** CD-ROM | disk | FTP | other *** search
/ Meeting Pearls 4 / Meeting Pearls Vol. IV (1996)(GTI - Schatztruhe)[!].iso / Pearls / midi / misc / Midi2TeX / src / tp_decl.pas < prev    next >
Pascal/Delphi Source File  |  1992-11-30  |  8KB  |  242 lines

  1. UNIT TP_Decl;
  2.  
  3. INTERFACE
  4.  
  5. uses  
  6.         DOS,
  7.         Printer;
  8.  
  9.  
  10. CONST
  11.     Version : String = 'V 1.1';
  12.     NilStr = #00;
  13.     BufSize = 8192; (* 8192 *)
  14.     NoTracks = 16;
  15.     MAXSLURR = 10; (* this is the maximum-1 that MusicTeX can handle *)
  16.     MAXBEAMS = 9; (* ditto *)
  17.     MAXPARTS = 25;
  18.     PT       = 3.5; (* 0.1 mm  1 inch/72.27 = 25.4/72.27 mm *)
  19.  
  20. TYPE
  21.     NoteTypes = (WH,WHPPP,WHPP,WHP,H,HPPP,HPP,HP,Q,QPPP,QPP,QP,
  22.                  CPPP,CPP,C3,CP,C,CCPP,CC3,CCP,CC,
  23.                  CCC3,CCCP,CCC,CCCC3,CCCCP,CCCC);
  24.  
  25.     DebugType = (SCREEN,DEBFILE,PRINT,NODEB);
  26.     EventType = (VOID,NOTEON,NOTEOFF,REST,TXT,SIGNATURE,PEDAL,KEYSIGN);
  27.     OrientType = (UP,DOWN);
  28.     ClefType   = (VIOLIN,ALTO1,ALTO2,ALTO3,ALTO4,ALTO5,BASS);
  29.     SlurType   = (STARTSLUR,ENDSLUR,REPEATSLUR);
  30.     KeySignType= (NON,FLAT,SHARP,CORRECT);
  31.  
  32.     String20Type = String[20];
  33.     Astr20Ptr    = ^String20Type;
  34.     String255Type = String[255];
  35.     Astr255Ptr    = ^String255Type;
  36.  
  37.     FileNameType = record
  38.         p  : pathstr;
  39.         d  : dirstr;
  40.         n  : namestr;
  41.         e  : extstr;
  42.     End;
  43.  
  44.     BufType = Packed ARRAY[1..BufSize] OF Byte;
  45.     FileRecord = record
  46.         BufSemaphore,
  47.         (*LastAvBytePnt,*)
  48.         LastNoBytesRead,
  49.         BufPoint    : Word;
  50.         BytesProcessed : Longint;
  51.         ReadBuf     : ^BufType;
  52.         ReadIn,i    : integer;
  53.         LastBlockRead,
  54.         NoMoreData  : Boolean;
  55.         FilePosition: LongInt;
  56.     end;
  57.  
  58.  
  59.     MeasureTime= record
  60.                     Measure     : Integer;
  61.                     MPart       : LongInt;
  62.                  End;
  63.                  
  64.  
  65.     NoteRecPoint = ^ NoteRecord;
  66.     NoteRecord = record
  67.                     MidiChnl,
  68.                     NoteVal,
  69.                     Velocity    : Byte;             
  70.                     NoteType    : NoteTypes;
  71.                     Event       : EventType;
  72.                     Orient      : OrientType;
  73.                     FilePos     : Longint;
  74.                     EndTime,
  75.                     StartTime   : MeasureTime;
  76.                     ChordNote,
  77.                     BeamNote,
  78.                     SlurrNote   : Boolean;
  79.                     Next,Prev   : NoteRecPoint;
  80.                     MetaTxt     : AStr20Ptr;
  81.                  End;
  82.  
  83.     BeamRecord = record
  84.                     StartNote,
  85.                     EndNote     : NoteRecPoint;
  86.                     NoNotes,
  87.                     Pitch,
  88.                     Numb        : BYTE;
  89.                     Slope       : ShortInt;
  90.                     Orient      : OrientType;
  91.                     NoteType    : NoteTypes;
  92.                     Chain2Next  : Boolean;
  93.                   End;
  94.  
  95.     SlurrRecord = record
  96.                     NotePnt     : NoteRecPoint;
  97.                     NoteVal,
  98.                     Numb1,
  99.                     Numb2       : BYTE;
  100.                     KindOf      : SlurType;
  101.                     Orient      : OrientType;
  102.                     Occupied    : BOOLEAN;
  103.                   End;
  104.  
  105.     ChordRecord  = record
  106.                      StartNote,
  107.                      EndNote       : NoteRecPoint;
  108.                      NoNotes       : Byte;
  109.                      ChordFinished : BOOLEAN;
  110.                    End;
  111.  
  112.     AccKeyType = record
  113.                    c,d,e,f,g,a,b : KeySignType;
  114.                  end;
  115.  
  116.     AccKeyArray = ARRAY[1..NoTracks] Of AccKeyType;
  117.  
  118.      HeapRecord = record
  119.                     Tail       : NoteRecPoint;
  120.                     Size       : Word;
  121.                   end;
  122.  
  123.     NoteArrayType   =  ARRAY[1..50] of NoteRecord;
  124.     ChordArrayType  =  ARRAY[1..25] of ChordRecord;
  125.     BeamArrayType  =  ARRAY[1..MAXBEAMS] of BeamRecord;
  126.     SlurrArrayType  =  ARRAY[1..MAXSLURR] of SlurrRecord;
  127.  
  128.  
  129.      TrackRecord = record
  130.                      NoteList           : HeapRecord;
  131.                      SpillList          : HeapRecord;
  132.                      ChordArray         : ChordArrayType;
  133.                      BeamArray          : BeamArrayType;
  134.                      SlurrArray         : SlurrArrayType;
  135.                      ChStackEnd,
  136.                      ChStackPoint,
  137.                      NotesSounding,
  138.                      StatusByte         : Byte;
  139.                      LastNoteOffTime,
  140.                      Curtime,
  141.                      OldTime,
  142.                      OldOldTime         : MeasureTime;
  143.                      FilRec             : FileRecord;
  144.                      SlurrPt,
  145.                      BeamPt,ChordPt     : Integer;
  146.                      Beam,
  147.                      Slurring,
  148.                      Chord,
  149.                      Skip,
  150.                      Instrument,
  151.                      ForceZeroBeams,
  152.                      EndOfTrackRead     : BOOLEAN;
  153.                      Clef               : ClefType;
  154.                      PartStart,
  155.                      PartEnd            : Array[1..MAXPARTS] of NoteRecPoint;
  156.                      AccKey             : AccKeyType;
  157.                    End;
  158.  
  159.  
  160.     ControlInfo= record
  161.                     
  162.                     Num,          (* numerator of time signature *)
  163.                     Den           (* denominator of time signature *) 
  164.                                     : byte;
  165.                     Division,     (* ticks in a quarter note *)
  166.                     TicksPerMeasure : integer;
  167.                     PartTime        : WORD;
  168.                     PartType        : Byte;
  169.                     nparts          : Byte;
  170.                     PartOverRule    : BOOLEAN;
  171.                     Tempo         (* int microsecs per quart note *)                        
  172.                                     :Longint;
  173.                     Twindow       (* TimeWindow *)
  174.                                     :WORD;
  175.                     KeySign,
  176.                     Minor           : ShortInt;
  177.                  End;
  178.  
  179.                    
  180. VAR
  181.     TmpStr      : String[40];
  182.     NilPos,
  183.     Drno,abyte  : Byte; 
  184.     ntracks,
  185.     ninstruments,
  186.     nTracksInInstr,
  187.     CurTrack,  
  188.     FileFormat,
  189.     SafetyCounter,
  190.     OK_result   : integer;     
  191.     MidiFile    : file;
  192.     DebugFile,
  193.     TexFile     : Text;
  194.     DebBuf,
  195.     TexBuf      : ^BufType;
  196.     FileInfo    : SearchRec;
  197.     DebugFileName,
  198.     MidiFileName,
  199.     TeXFileName : FileNameType;
  200.     path        : PathStr;
  201.     fname       : NameStr;
  202.     dir         : DirStr;
  203.     ext         : ExtStr;
  204.     ReadIn,i    : integer;
  205.     Quantizing,
  206.     QuitTrack,    
  207.     DebugFileOpened,
  208.     MidiFileOpened,
  209.     TeXHeaderFinished,
  210.     Debug       : Boolean;
  211.     QuantTime   : Integer;
  212.     NoOfBytes   : LongInt;
  213.     TrackArray  : ARRAY[1..NoTracks] OF TrackRecord;    
  214.     SlurrIndexes: ARRAY[0..25] of boolean;
  215.     ALongInt    : LongInt;
  216.     PieceContr  : ControlInfo;
  217.     TempTime,
  218.     OldTime,
  219.     CurTime     : MeasureTime;
  220.     MeasureStr  : STRING[255];
  221.     DebugOut    : DebugType;
  222.     MeasureCount: Integer;
  223.     Notes       : String[128];
  224.     (* AES_handle  : Integer; *)
  225.     HlpFilRec   : FileRecord;
  226.     OldExitProc : pointer;
  227.     CPosition   : Byte;
  228.     N           : NoteRecPoint;
  229.     NotePool    : HeapRecord;
  230.     TrackOrder  : Array[1..NoTracks] OF Byte;
  231.     BeamIndex, OrderIndex,
  232.     NoOfSkips,NoOfPages,Indent,BarIndent,
  233.     ScoreWidth,ScoreHeight,ScoreSep,
  234.     LineHeight,MeasureMaxCnt,ElemSkip,
  235.     MusicSize,CumLength,CumHeight   : Integer;
  236.     SizingChanged,BatchProcessing    : Boolean;
  237.  
  238. IMPLEMENTATION
  239.  
  240. Begin
  241. End.
  242.